1. Field of the Invention
This invention relates to product configuration and more specifically, to the caching of select configuration information during the product configuration process thereby improving the efficiency and response time of a configuration system.
2. Description of the Related Art
Many products offered by manufactures today can be manufactured in a multitude of different configurations. When a consumer desires to purchase such a configurable product, she is required to communicate the specific product configuration she wants to the supplier of that product. This interaction between the consumer and the supplier of the configurable product can be easily accomplished person to person. However, with the popularity of e-commerce and the willingness of consumers to purchase configurable products over the Internet, other forms of consumer-supplier interaction have developed.
One such form of interaction is where a consumer shops at the suppliers Internet web page (referred to as an xe2x80x9ce-storexe2x80x9d). As the consumer browses the e-store, products are visually and descriptively displayed thereby allowing the user to have a virtual shopping experience. Upon finding a product that the consumer is interested in purchasing, the finer details of configuring the product to the consumer""s exact liking must be established. Depending on the product, the configuration may be fairly simple (e.g., selecting a color or size), to fairly complex (e.g., a computer system or automobile). Regardless of the configuration complexity, a configuration tool must be implemented to stand in the place of a human supplier.
A typical configuration tool presently being used is a software driven user-interface (UI) that displays all possible configurations to the consumer, and allows the consumer to select the various desired features of a configurable product. As the consumer selects each feature, a configuration engine coupled to the UI determines any incompatibilities or constraints arising from the selection of certain features. The UI then displays only the remaining features available for selection according to the configuration engine. For example, if a consumer shopping for a computer identifies the PENTIUM 586(trademark) processor as the desired central processing unit (CPU) for the computer they wish to purchase, the available random access memory (RAM) feature of that computer may then be limited to 32 M-bytes or more. Thus, any RAM option having less than 32 M-bytes would be removed from the available features list by the configuration engine. The UI would reflect this by not offering the consumer the option to choose less than 32 M-bytes of RAM.
One problem that has arisen from this method is that configuration related computation may take a significant amount of computing time thereby tying up configuration resources (e.g., the configuration engine). The more complex the product, the more computation time that is required. As computation times increase with the complexity of a configurable product, configuration resources become scarce. As a result, consumers are required to wait thereby frustrating their virtual shopping experience. Ultimately, potential sales are lost. Moreover, the failed e-store transaction may send consumers away with a negative impression of virtual shopping. Such consumers may then refrain from using e-stores in the future, and communicate their negative experience to others thereby proliferating non-use of such e-stores.
One solution to this resources management problem is the reallocating of configuration resources in the event that they remain idle for a period of time. For example, if 60 seconds have gone by without any input from a first consumer, an assumption is made that the consumer is taking time to make a decision. Thus, while the first consumer is deciding, that particular configuration resource reallocates itself to a second consumer to allow processing of their product configuration. Once the first consumer makes their next selection, a configuration resource will be rededicated to complete that first consumer""s product configuration.
Such a solution, however, introduces other problems. For instance, when a configuration system serves a large number of simultaneous users and it is not possible to have a continuous dedicated connection between the system and every user, the state of their configuration must somehow be maintained for the entire duration of their interactive session. Thus, a processing mechanism that reallocates users during their respective interactive sessions to different configuration engines has the problem of additional overhead. Specifically, additional processing is required to restore the state of the in-progress product configuration to the newly assigned configuration engine. This additional processing time places a drain on the configuration resources thereby limiting the ability of those resources to service other consumers.
What is needed then is a configuration technique that reduces the need for direct contact with configuration resources. The technique must provide efficient product configuration times by eliminating redundant processing cycles or computing time. The technique must further provide access to all configurable features of a given product, and must be able to define any constraints or incompatibilities that exist between the various combinations of configurable features.
The present invention provides a system and method for selecting the features of a configurable product. More specifically, the present invention reduces the need for direct contact with configuration resources by memorizing various configurations that have occurred in the past. Thus, the present invention provides efficient product configuration times by eliminating redundant processing cycles or computing times. The present invention allows a user to access all configurable features of a given product, and defines any constraints or incompatibilities that exist between the various combinations of those configurable features.
The complete array of all possible configurations for a configurable product can be vast. Such a vast array of possible configurations cannot be fully processed and pre-computed in a reasonable amount of time by configuration resources. However, a typical user of a configuration system generally does not explore all possible product configurations. Rather, a user may actually explore only a small sub-set or group of all possible product configurations. Moreover, when considering the actual configurations explored by all the users of a particular configuration system, it can be seen that only a relatively small number of configurations tend to be favored by a large set of those users. Thus, rather than attempt to memorize all of the possible configurations, one embodiment of the present invention memorizes the smaller number of configurations that are statistically favored based on the users"" actual selected configurations. Weighted frequency counts can be used to determine these most favored configurations.
Once the group of actual selected configurations is identified and memorized, the corresponding constraints and incompatibilities that are associated with each of those configurations are also memorized. This memorized configuration information is available for later use thereby eliminating the need for redundant processing and computing efforts. More specifically, the next time that same configuration is provided by another user (or the same user for that matter), the corresponding constraints and incompatibilities can be retrieved from memory so that the configuration process can proceed to its next step. Retrieving the corresponding constraints and incompatibilities from memory as opposed to recomputing them with a configuration tool requires less time and avoids tying-up scarce configuration resources.
When product configuration parameters change for whatever reason (e.g., a vendor changes specification requirements of a microchip, or a discontinued item is replaced by a new improved item), the memory locations storing configuration information affected by that parameter change can be updated with current or more accurate configuration information by re-computing the configuration states (e.g., corresponding constraints and incompatibilities) based on the new configuration parameter. This updating and re-computation can take place during off-peak hours of the configuration system operation. Thus, the integrity of the counts for various configurable features can be maintained despite changes in the configuration parameters of the offered feature.